package com.yuandian.customer.perception.service;

import com.yuandian.api.customer_perception.po.BusinessComplianceStatisticsParms;
import com.yuandian.api.customer_perception.po.StepDetailParams;
import com.yuandian.api.customer_perception.vo.ComOperatorOverviewVO;
import com.yuandian.bpm.common.core.util.R;
import com.yuandian.utils.PageDataInfo;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

/**
 * 业务合规统计 服务类
 * @author LinShiHe
 * @since 2021-05-18
 */
public interface BusinessComplianceStatisticsService {

    /**
     * 分页查询操作员总览列表
     * @param params
     * @return 通用返回对象
     */
    PageDataInfo queryOperatorOverview(BusinessComplianceStatisticsParms params);

    /**
     * 操作员总览列表下载
     * @param params
     * @return 通用返回对象
     */
    List<ComOperatorOverviewVO> downloadOperatorOverview(BusinessComplianceStatisticsParms params);

    /**
     * 根据搜索条件查询各种不合规类型的数据量
     * @param params 查询参数（工号、营业员姓名、业务编码、业务不合规类型、统计时间等）
     * @return 通用返回对象
     */
    R<Object> queryEchartDataByUnComplianceType(BusinessComplianceStatisticsParms params);

    /**
     * 分页查询XX(工号)操作员(姓名)不合规业务列表
     * @param params 查询参数
     * @return 分页结果集
     */
    R<PageDataInfo> queryViolationBusinessList(BusinessComplianceStatisticsParms params);

    /**
     * XX(工号)操作员(姓名)不合规业务列表下载
     * @param params 查询参数
     * @return 分页结果集
     */
    void queryViolationBusinessListExport(BusinessComplianceStatisticsParms params, HttpServletResponse response) throws IOException;

    /**
     * 查询不合规操作员人数
     * @param params
     * @return int[]
     */
    List<Long> queryUnComplianceOperatorNumber(BusinessComplianceStatisticsParms params);

    /**
     * 分页查询XX(工号)操作员(姓名)不合规业务总览列表
     * @param params
     * @return 通用返回对象
     */
    PageDataInfo queryOneOperatorStatistic(BusinessComplianceStatisticsParms params);


    /**
     * 下载XX(工号)操作员(姓名)不合规业务总览列表
     * @param params
     * @return 通用返回对象
     */
    void downloadOneOperatorStatistic(BusinessComplianceStatisticsParms params, HttpServletResponse response) throws IOException;

	PageDataInfo queryStepDetailList(StepDetailParams params);
}
